// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch.test;


import com.yahoo.config.subscription.ConfigGetter;
import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig;
import com.yahoo.prelude.fastsearch.ByteField;
import com.yahoo.prelude.fastsearch.DataField;
import com.yahoo.prelude.fastsearch.Docsum;
import com.yahoo.prelude.fastsearch.DocsumDefinition;
import com.yahoo.prelude.fastsearch.DocsumDefinitionSet;
import com.yahoo.prelude.fastsearch.FastHit;
import com.yahoo.prelude.fastsearch.IntegerField;
import com.yahoo.prelude.fastsearch.StringField;
import com.yahoo.document.DocumentId;
import com.yahoo.document.GlobalId;


/**
 * Tests docsum class functionality
 *
 * @author bratseth
 */
public class DocsumDefinitionTestCase extends junit.framework.TestCase {

    public DocsumDefinitionTestCase(String name) {
        super(name);
    }

    public void testReading() {
        String summary_cf = "file:src/test/java/com/yahoo/prelude/fastsearch/test/documentdb-info.cfg";
        DocsumDefinitionSet set = createDocsumDefinitionSet(summary_cf);

        String[] defs = new String[] { "[0,default]", "[1,version1]",
                "[237,withranklog]", "[2,version2]", "[3,version3]",
                "[4,version4]", "[5,version5]" };
        String setAsString = set.toString();
        for (String d : defs) {
            assertFalse(setAsString.indexOf(d) == -1);
        }
        assertEquals(7, set.size());

        DocsumDefinition docsum0 = set.getDocsumDefinition(0);

        assertNotNull(docsum0);
        assertEquals("default", docsum0.getName());
        assertEquals(19, docsum0.getFieldCount());
        assertNull(docsum0.getField(19));
        assertEquals("DSHOST", docsum0.getField(7).getName());

        assertTrue(docsum0.getField(1) instanceof StringField);
        assertTrue(docsum0.getField(6) instanceof ByteField);
        assertTrue(docsum0.getField(7) instanceof IntegerField);
        assertTrue(docsum0.getField(18) instanceof DataField);
    }

    public void testDecoding() {
        String summary_cf = "file:src/test/java/com/yahoo/prelude/fastsearch/test/documentdb-info.cfg";
        DocsumDefinitionSet set = createDocsumDefinitionSet(summary_cf);
        FastHit hit = new FastHit();

        set.lazyDecode(null, docsum4, hit);
        assertEquals("Arts/Celebrities/Madonna", hit.getField("TOPIC"));
        assertEquals("1", hit.getField("EXTINFOSOURCE").toString());
        assertEquals("10", hit.getField("LANG1").toString());
        assertEquals("352", hit.getField("WORDS").toString());
        assertEquals("index:0/0/0/" + FastHit.asHexString(hit.getGlobalId()), hit.getId().toString());
    }

    public void testDecodingCompressed() {
        String summary_cf = "file:src/test/java/com/yahoo/prelude/fastsearch/test/documentdb-info.cfg";
        DocsumDefinitionSet set = createDocsumDefinitionSet(summary_cf);
        FastHit hit = new FastHit();

        set.lazyDecode(null, docsum5, hit);
        assertEquals("Madonna", hit.getField("TITLE"));
        assertEquals(561, ((String) hit.getField("DYNTEASER")).length());
    }

    public void testLazyDecoding() {
        String summary_cf = "file:src/test/java/com/yahoo/prelude/fastsearch/test/documentdb-info.cfg";
        DocsumDefinitionSet set = createDocsumDefinitionSet(summary_cf);
        DocsumDefinition def = set.getDocsumDefinition(4);
        Docsum sum = new Docsum(def, docsum4);
        FastHit hit = new FastHit();
        hit.addSummary(sum);

        assertEquals("Arts/Celebrities/Madonna", hit.getField("TOPIC").toString());
        assertEquals("1", hit.getField("EXTINFOSOURCE").toString());
        assertEquals("10", hit.getField("LANG1").toString());
        assertEquals("352", hit.getField("WORDS").toString());
        assertEquals("index:0/0/0/" + FastHit.asHexString(hit.getGlobalId()), hit.getId().toString());
    }

    public void testLazyDecodingCompressed() {
        String summary_cf = "file:src/test/java/com/yahoo/prelude/fastsearch/test/documentdb-info.cfg";
        DocsumDefinitionSet set = createDocsumDefinitionSet(summary_cf);
        DocsumDefinition def = set.getDocsumDefinition(5);
        Docsum sum = new Docsum(def, docsum5);
        FastHit hit = new FastHit();
        hit.addSummary(sum);

        assertEquals("Madonna", hit.getField("TITLE"));
        assertEquals(561, ((String) hit.getField("DYNTEASER")).length());

    }

    public static GlobalId createGlobalId(int docId) {
        return new GlobalId((new DocumentId("doc:test:" + docId)).getGlobalId());
    }

    public static byte[] docsum4 = {
        (byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x1e, (byte) 0x00,
        (byte) 0x68, // 4, 104, 0, 'h'
        (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f,
        (byte) 0x2f, (byte) 0x77, (byte) 0x77, (byte) 0x77, (byte) 0x2e,
        (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x64, (byte) 0x79,
        (byte) 0x6f, (byte) 0x66, (byte) 0x6d, (byte) 0x61, (byte) 0x64,
        (byte) 0x6f, (byte) 0x6e, (byte) 0x6e, (byte) 0x61, (byte) 0x2e,
        (byte) 0x63, (byte) 0x6f, (byte) 0x6d, (byte) 0x2f, (byte) 0x00,
        (byte) 0x00, (byte) 0x4d, (byte) 0x00, (byte) 0x53, (byte) 0x74,
        (byte) 0x75, (byte) 0x64, (byte) 0x79, (byte) 0x4f, (byte) 0x66,
        (byte) 0x4d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x2e, (byte) 0x63, (byte) 0x6f,
        (byte) 0x6d, (byte) 0x20, (byte) 0x2d, (byte) 0x20, (byte) 0x49,
        (byte) 0x6e, (byte) 0x74, (byte) 0x65, (byte) 0x72, (byte) 0x76,
        (byte) 0x69, (byte) 0x65, (byte) 0x77, (byte) 0x73, (byte) 0x2c,
        (byte) 0x20, (byte) 0x41, (byte) 0x72, (byte) 0x74, (byte) 0x69,
        (byte) 0x63, (byte) 0x6c, (byte) 0x65, (byte) 0x73, (byte) 0x2c,
        (byte) 0x20, (byte) 0x52, (byte) 0x65, (byte) 0x76, (byte) 0x69,
        (byte) 0x65, (byte) 0x77, (byte) 0x73, (byte) 0x2c, (byte) 0x20,
        (byte) 0x51, (byte) 0x75, (byte) 0x6f, (byte) 0x74, (byte) 0x65,
        (byte) 0x73, (byte) 0x2c, (byte) 0x20, (byte) 0x45, (byte) 0x73,
        (byte) 0x73, (byte) 0x61, (byte) 0x79, (byte) 0x73, (byte) 0x20,
        (byte) 0x61, (byte) 0x6e, (byte) 0x64, (byte) 0x20, (byte) 0x6d,
        (byte) 0x6f, (byte) 0x72, (byte) 0x65, (byte) 0x2e, (byte) 0x2e,
        (byte) 0xfd, (byte) 0x00, (byte) 0x6d, (byte) 0x61, (byte) 0x64,
        (byte) 0x6f, (byte) 0x6e, (byte) 0x6e, (byte) 0x61, (byte) 0x20,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61,
        (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e, (byte) 0x61,
        (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f,
        (byte) 0x6e, (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e,
        (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64,
        (byte) 0x6f, (byte) 0x6e, (byte) 0x6e, (byte) 0x61, (byte) 0x20,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61,
        (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e, (byte) 0x61,
        (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f,
        (byte) 0x6e, (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e,
        (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64,
        (byte) 0x6f, (byte) 0x6e, (byte) 0x6e, (byte) 0x61, (byte) 0x20,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61,
        (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e, (byte) 0x61,
        (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f,
        (byte) 0x6e, (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e,
        (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64,
        (byte) 0x6f, (byte) 0x6e, (byte) 0x6e, (byte) 0x61, (byte) 0x20,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61,
        (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e, (byte) 0x61,
        (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f,
        (byte) 0x6e, (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e,
        (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64,
        (byte) 0x6f, (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x61,
        (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f,
        (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61,
        (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x61, (byte) 0x20,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64,
        (byte) 0x6f, (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x61,
        (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f,
        (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61,
        (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x61, (byte) 0x20,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64,
        (byte) 0x6f, (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x61,
        (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f,
        (byte) 0x6e, (byte) 0x61, (byte) 0x2e, (byte) 0x2e, (byte) 0x2e,
        (byte) 0x18, (byte) 0x00, (byte) 0x41, (byte) 0x72, (byte) 0x74,
        (byte) 0x73, (byte) 0x2f, (byte) 0x43, (byte) 0x65, (byte) 0x6c,
        (byte) 0x65, (byte) 0x62, (byte) 0x72, (byte) 0x69, (byte) 0x74,
        (byte) 0x69, (byte) 0x65, (byte) 0x73, (byte) 0x2f, (byte) 0x4d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e,
        (byte) 0x61, (byte) 0x13, (byte) 0x00, (byte) 0x43, (byte) 0x65,
        (byte) 0x6c, (byte) 0x65, (byte) 0x62, (byte) 0x72, (byte) 0x69,
        (byte) 0x74, (byte) 0x69, (byte) 0x65, (byte) 0x73, (byte) 0x2f,
        (byte) 0x4d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x4f, (byte) 0x00, (byte) 0x55,
        (byte) 0x73, (byte) 0x65, (byte) 0x73, (byte) 0x20, (byte) 0x69,
        (byte) 0x6e, (byte) 0x74, (byte) 0x65, (byte) 0x72, (byte) 0x76,
        (byte) 0x69, (byte) 0x65, (byte) 0x77, (byte) 0x73, (byte) 0x2c,
        (byte) 0x20, (byte) 0x61, (byte) 0x72, (byte) 0x74, (byte) 0x69,
        (byte) 0x63, (byte) 0x6c, (byte) 0x65, (byte) 0x73, (byte) 0x2c,
        (byte) 0x20, (byte) 0x61, (byte) 0x6e, (byte) 0x64, (byte) 0x20,
        (byte) 0x71, (byte) 0x75, (byte) 0x6f, (byte) 0x74, (byte) 0x65,
        (byte) 0x73, (byte) 0x20, (byte) 0x74, (byte) 0x6f, (byte) 0x20,
        (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x64, (byte) 0x79,
        (byte) 0x20, (byte) 0x68, (byte) 0x6f, (byte) 0x77, (byte) 0x20,
        (byte) 0x4d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x68, (byte) 0x61,
        (byte) 0x73, (byte) 0x20, (byte) 0x63, (byte) 0x68, (byte) 0x61,
        (byte) 0x6e, (byte) 0x67, (byte) 0x65, (byte) 0x64, (byte) 0x20,
        (byte) 0x63, (byte) 0x75, (byte) 0x6c, (byte) 0x74, (byte) 0x75,
        (byte) 0x72, (byte) 0x65, (byte) 0x2e, (byte) 0x01, (byte) 0x00,
        (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x76, (byte) 0x16,
        (byte) 0x32, (byte) 0x00, (byte) 0xe6, (byte) 0x23, (byte) 0x00,
        (byte) 0x00, (byte) 0x60, (byte) 0x01, (byte) 0x00, (byte) 0x00,
        (byte) 0x2c, (byte) 0xcb, (byte) 0x70, (byte) 0x3e, (byte) 0x2c,
        (byte) 0xcb, (byte) 0x70, (byte) 0x3e, (byte) 0x0a, (byte) 0xff,
        (byte) 0xff, (byte) 0xff, (byte) 0x2e, (byte) 0xd3, (byte) 0x3a,
        (byte) 0xa1, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
        (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xfd,
        (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x1c, (byte) 0x69,
        (byte) 0x6e, (byte) 0x74, (byte) 0x6f, (byte) 0x20, (byte) 0x6f,
        (byte) 0x6e, (byte) 0x65, (byte) 0x20, (byte) 0x77, (byte) 0x65,
        (byte) 0x62, (byte) 0x73, (byte) 0x69, (byte) 0x74, (byte) 0x65,
        (byte) 0x20, (byte) 0x6f, (byte) 0x6e, (byte) 0x20, (byte) 0x68,
        (byte) 0x6f, (byte) 0x77, (byte) 0x20, (byte) 0x02, (byte) 0x4d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e,
        (byte) 0x61, (byte) 0x03, (byte) 0x20, (byte) 0x68, (byte) 0x61,
        (byte) 0x73, (byte) 0x20, (byte) 0x61, (byte) 0x6e, (byte) 0x64,
        (byte) 0x20, (byte) 0x63, (byte) 0x6f, (byte) 0x6e, (byte) 0x74,
        (byte) 0x69, (byte) 0x6e, (byte) 0x75, (byte) 0x65, (byte) 0x73,
        (byte) 0x20, (byte) 0x74, (byte) 0x6f, (byte) 0x20, (byte) 0x73,
        (byte) 0x68, (byte) 0x61, (byte) 0x70, (byte) 0x65, (byte) 0x1c,
        (byte) 0x74, (byte) 0x68, (byte) 0x65, (byte) 0x20, (byte) 0x73,
        (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x20, (byte) 0x66,
        (byte) 0x75, (byte) 0x6c, (byte) 0x6c, (byte) 0x20, (byte) 0x6a,
        (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x69, (byte) 0x63,
        (byte) 0x65, (byte) 0x20, (byte) 0x2e, (byte) 0x2e, (byte) 0x20,
        (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20,
        (byte) 0x4f, (byte) 0x72, (byte) 0x69, (byte) 0x67, (byte) 0x69,
        (byte) 0x6e, (byte) 0x61, (byte) 0x6c, (byte) 0x20, (byte) 0x02,
        (byte) 0x4d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x03, (byte) 0x20, (byte) 0x57,
        (byte) 0x65, (byte) 0x62, (byte) 0x72, (byte) 0x69, (byte) 0x6e,
        (byte) 0x67, (byte) 0x20, (byte) 0x73, (byte) 0x69, (byte) 0x74,
        (byte) 0x65, (byte) 0x20, (byte) 0x6f, (byte) 0x77, (byte) 0x6e,
        (byte) 0x65, (byte) 0x64, (byte) 0x20, (byte) 0x62, (byte) 0x79,
        (byte) 0x20, (byte) 0x4a, (byte) 0x65, (byte) 0x6e, (byte) 0x6e,
        (byte) 0x69, (byte) 0x66, (byte) 0x65, (byte) 0x72, (byte) 0x20,
        (byte) 0x57, (byte) 0x61, (byte) 0x6c, (byte) 0x6c, (byte) 0x72,
        (byte) 0x61, (byte) 0x66, (byte) 0x66, (byte) 0x1c, (byte) 0x02,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x03, (byte) 0x20, (byte) 0x02,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x03, (byte) 0x20, (byte) 0x02,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x03, (byte) 0x20, (byte) 0x02,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x03, (byte) 0x20, (byte) 0x02,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x03, (byte) 0x20, (byte) 0x02,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x6e, (byte) 0x61, (byte) 0x03, (byte) 0x20, (byte) 0x6d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x61,
        (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f,
        (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61,
        (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x61, (byte) 0x20,
        (byte) 0x6d, (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e,
        (byte) 0x61, (byte) 0x20, (byte) 0x6d, (byte) 0x61, (byte) 0x64,
        (byte) 0x6f, (byte) 0x6e, (byte) 0x61, (byte) 0x20, (byte) 0x6d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x61,
        (byte) 0x1c};

    // this has compressed fields
    public static byte[] docsum5 = {
        (byte) 0x05, (byte) 0x00, (byte) 0x00, (byte) 0x00, // 5, 41, 0, 'h', 't', 't'
        (byte) 0x29, (byte) 0x00, (byte) 0x68, (byte) 0x74, (byte) 0x74,
        (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x77,
        (byte) 0x77, (byte) 0x77, (byte) 0x2e, (byte) 0x68, (byte) 0x75,
        (byte) 0x6e, (byte) 0x67, (byte) 0x61, (byte) 0x72, (byte) 0x69,
        (byte) 0x61, (byte) 0x6e, (byte) 0x62, (byte) 0x65, (byte) 0x73,
        (byte) 0x74, (byte) 0x2e, (byte) 0x63, (byte) 0x6f, (byte) 0x6d,
        (byte) 0x2f, (byte) 0x4a, (byte) 0x6f, (byte) 0x7a, (byte) 0x73,
        (byte) 0x61, (byte) 0x2f, (byte) 0x37, (byte) 0x2e, (byte) 0x68,
        (byte) 0x74, (byte) 0x6d, (byte) 0x6c, (byte) 0x00, (byte) 0x00,
        (byte) 0x00, (byte) 0x00, (byte) 0x07, (byte) 0x00, (byte) 0x4d,
        (byte) 0x61, (byte) 0x64, (byte) 0x6f, (byte) 0x6e, (byte) 0x6e,
        (byte) 0x61, (byte) 0x79, (byte) 0x00, (byte) 0x41, (byte) 0x6d,
        (byte) 0x65, (byte) 0x6e, (byte) 0x6e, (byte) 0x79, (byte) 0x69,
        (byte) 0x62, (byte) 0x65, (byte) 0x6e, (byte) 0x20, (byte) 0x6d,
        (byte) 0xc3, (byte) 0xa1, (byte) 0x73, (byte) 0x20, (byte) 0x6f,
        (byte) 0x72, (byte) 0x73, (byte) 0x7a, (byte) 0xc3, (byte) 0xa1,
        (byte) 0x67, (byte) 0x62, (byte) 0x61, (byte) 0x20, (byte) 0x6b,
        (byte) 0xc3, (byte) 0xad, (byte) 0x76, (byte) 0xc3, (byte) 0xa1,
        (byte) 0x6e, (byte) 0x6a, (byte) 0x61, (byte) 0x20, (byte) 0x20,
        (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
        (byte) 0x61, (byte) 0x20, (byte) 0x74, (byte) 0x65, (byte) 0x72,
        (byte) 0x6d, (byte) 0xc3, (byte) 0xa9, (byte) 0x6b, (byte) 0x65,
        (byte) 0x74, (byte) 0x20, (byte) 0x6b, (byte) 0xc3, (byte) 0xbc,
        (byte) 0x6c, (byte) 0x64, (byte) 0x65, (byte) 0x6e, (byte) 0x69,
        (byte) 0x2c, (byte) 0x20, (byte) 0x6b, (byte) 0xc3, (byte) 0xa9,
        (byte) 0x72, (byte) 0x6a, (byte) 0xc3, (byte) 0xbc, (byte) 0x6b,
        (byte) 0x20, (byte) 0x65, (byte) 0x2d, (byte) 0x6d, (byte) 0x61,
        (byte) 0x69, (byte) 0x6c, (byte) 0x2d, (byte) 0x62, (byte) 0x65,
        (byte) 0x6e, (byte) 0x20, (byte) 0x76, (byte) 0x65, (byte) 0x67,
        (byte) 0x79, (byte) 0x65, (byte) 0x20, (byte) 0x66, (byte) 0x65,
        (byte) 0x6c, (byte) 0x20, (byte) 0x76, (byte) 0x65, (byte) 0x6c,
        (byte) 0xc3, (byte) 0xbc, (byte) 0x6e, (byte) 0x6b, (byte) 0x20,
        (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20,
        (byte) 0x20, (byte) 0x61, (byte) 0x20, (byte) 0x6b, (byte) 0x61,
        (byte) 0x70, (byte) 0x63, (byte) 0x73, (byte) 0x6f, (byte) 0x6c,
        (byte) 0x61, (byte) 0x74, (byte) 0x6f, (byte) 0x74, (byte) 0x00,
        (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
        (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
        (byte) 0x05, (byte) 0x27, (byte) 0x01, (byte) 0x00, (byte) 0xc2,
        (byte) 0x11, (byte) 0x00, (byte) 0x00, (byte) 0x3e, (byte) 0x00,
        (byte) 0x00, (byte) 0x00, (byte) 0xc1, (byte) 0x00, (byte) 0x58,
        (byte) 0x3d, (byte) 0xc1, (byte) 0x00, (byte) 0x58, (byte) 0x3d,
        (byte) 0x17, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x2f,
        (byte) 0xf0, (byte) 0xe4, (byte) 0xc3, (byte) 0x00, (byte) 0x00,
        (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
        (byte) 0x00, (byte) 0x42, (byte) 0x01, (byte) 0x00, (byte) 0x80,
        (byte) 0x49, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x78,
        (byte) 0x9c, (byte) 0xad, (byte) 0x91, (byte) 0xb1, (byte) 0x6e,
        (byte) 0xc2, (byte) 0x40, (byte) 0x0c, (byte) 0x86, (byte) 0x5f,
        (byte) 0xc5, (byte) 0xdd, (byte) 0x09, (byte) 0x4d, (byte) 0x04,
        (byte) 0x41, (byte) 0x88, (byte) 0xa9, (byte) 0xd0, (byte) 0x16,
        (byte) 0xb5, (byte) 0x48, (byte) 0x08, (byte) 0xa9, (byte) 0xd0,
        (byte) 0x85, (byte) 0xcd, (byte) 0x81, (byte) 0x6b, (byte) 0x08,
        (byte) 0xb9, (byte) 0xbb, (byte) 0xa0, (byte) 0x9c, (byte) 0x83,
        (byte) 0x94, (byte) 0x6c, (byte) 0x7d, (byte) 0x80, (byte) 0x4e,
        (byte) 0x7d, (byte) 0x82, (byte) 0x8c, (byte) 0x19, (byte) 0x58,
        (byte) 0x3b, (byte) 0xb1, (byte) 0xf9, (byte) 0xc5, (byte) 0x7a,
        (byte) 0x51, (byte) 0xa1, (byte) 0x64, (byte) 0x40, (byte) 0xea,
        (byte) 0x52, (byte) 0x4f, (byte) 0xff, (byte) 0xd9, (byte) 0xf7,
        (byte) 0x7f, (byte) 0xbe, (byte) 0xb3, (byte) 0x27, (byte) 0xfc,
        (byte) 0xb9, (byte) 0x9c, (byte) 0x0f, (byte) 0xe1, (byte) 0x12,
        (byte) 0x93, (byte) 0xd7, (byte) 0x87, (byte) 0xe7, (byte) 0x45,
        (byte) 0xe3, (byte) 0xfc, (byte) 0xe4, (byte) 0x78, (byte) 0x6e,
        (byte) 0xdf, (byte) 0x87, (byte) 0x16, (byte) 0x8c, (byte) 0xb2,
        (byte) 0x35, (byte) 0xee, (byte) 0x84, (byte) 0xa1, (byte) 0x16,
        (byte) 0xcc, (byte) 0x89, (byte) 0xcb, (byte) 0x8d, (byte) 0xcc,
        (byte) 0x21, (byte) 0x6b, (byte) 0x83, (byte) 0xe7, (byte) 0xb7,
        (byte) 0x2f, (byte) 0x57, (byte) 0x17, (byte) 0x42, (byte) 0x0e,
        (byte) 0xdc, (byte) 0x9e, (byte) 0xe3, (byte) 0xdd, (byte) 0x76,
        (byte) 0x3a, (byte) 0x7d, (byte) 0xa7, (byte) 0xdb, (byte) 0xeb,
        (byte) 0xf6, (byte) 0xe1, (byte) 0x5f, (byte) 0x62, (byte) 0x08,
        (byte) 0xf3, (byte) 0xe5, (byte) 0x6c, (byte) 0x34, (byte) 0x7b,
        (byte) 0x81, (byte) 0x7b, (byte) 0xfe, (byte) 0x98, (byte) 0x3e,
        (byte) 0x0e, (byte) 0x9a, (byte) 0xa5, (byte) 0x29, (byte) 0xae,
        (byte) 0x13, (byte) 0xad, (byte) 0xf1, (byte) 0xba, (byte) 0xaf,
        (byte) 0xe3, (byte) 0xc2, (byte) 0x4a, (byte) 0x81, (byte) 0xc2,
        (byte) 0x10, (byte) 0x4d, (byte) 0x33, (byte) 0xed, (byte) 0xf9,
        (byte) 0x75, (byte) 0xda, (byte) 0x14, (byte) 0x5c, (byte) 0x49,
        (byte) 0x61, (byte) 0xae, (byte) 0x3b, (byte) 0x4f, (byte) 0x7d,
        (byte) 0x0b, (byte) 0xe0, (byte) 0x32, (byte) 0x05, (byte) 0xac,
        (byte) 0x11, (byte) 0x39, (byte) 0xa6, (byte) 0x49, (byte) 0x6a,
        (byte) 0x3d, (byte) 0x65, (byte) 0x18, (byte) 0x41, (byte) 0x1c,
        (byte) 0xd5, (byte) 0x42, (byte) 0x4a, (byte) 0x3e, (byte) 0xd8,
        (byte) 0x39, (byte) 0x18, (byte) 0x88, (byte) 0xf9, (byte) 0x4b,
        (byte) 0x92, (byte) 0xe1, (byte) 0x2a, (byte) 0xe4, (byte) 0x8a,
        (byte) 0x7e, (byte) 0x8c, (byte) 0x5c, (byte) 0x19, (byte) 0x40,
        (byte) 0x6b, (byte) 0x7e, (byte) 0x1f, (byte) 0x0f, (byte) 0x1d,
        (byte) 0x82, (byte) 0xc8, (byte) 0x00, (byte) 0x61, (byte) 0x4a,
        (byte) 0x28, (byte) 0x15, (byte) 0x16, (byte) 0x05, (byte) 0xde,
        (byte) 0x9c, (byte) 0xe1, (byte) 0x4a, (byte) 0x68, (byte) 0x9d,
        (byte) 0x47, (byte) 0x81, (byte) 0xd0, (byte) 0xa0, (byte) 0x6a,
        (byte) 0xca, (byte) 0x89, (byte) 0x1e, (byte) 0xa0, (byte) 0xe5,
        (byte) 0x1d, (byte) 0xf6, (byte) 0x5c, (byte) 0xea, (byte) 0xed,
        (byte) 0xf9, (byte) 0x57, (byte) 0x08, (byte) 0x24, (byte) 0x52,
        (byte) 0xc5, (byte) 0x55, (byte) 0x2c, (byte) 0xc8, (byte) 0xd6,
        (byte) 0x8e, (byte) 0x72, (byte) 0x2d, (byte) 0x74, (byte) 0xd4,
        (byte) 0xb2, (byte) 0xaa, (byte) 0x4a, (byte) 0xb7, (byte) 0x7c,
        (byte) 0x8c, (byte) 0x41, (byte) 0x38, (byte) 0x0a, (byte) 0x23,
        (byte) 0xe9, (byte) 0xd4, (byte) 0xa0, (byte) 0xbd, (byte) 0x08,
        (byte) 0x73, (byte) 0x01, (byte) 0x6f, (byte) 0x42, (byte) 0x5a,
        (byte) 0x25, (byte) 0xf9, (byte) 0xa8, (byte) 0xe3, (byte) 0x5f,
        (byte) 0x42, (byte) 0x8c, (byte) 0xbb, (byte) 0x95, (byte) 0x49,
        (byte) 0x24, (byte) 0x52, (byte) 0x42, (byte) 0xa7, (byte) 0x07,
        (byte) 0x6c, (byte) 0x32, (byte) 0x1d, (byte) 0xd8, (byte) 0x65,
        (byte) 0xde, (byte) 0x29, (byte) 0x24, (byte) 0xdc, (byte) 0x6b,
        (byte) 0x41, (byte) 0xed, (byte) 0x4d, (byte) 0xf6, (byte) 0xc7,
        (byte) 0x12, (byte) 0x4c, (byte) 0x91, (byte) 0x04, (byte) 0x49,
        (byte) 0x5a, (byte) 0x8f, (byte) 0x04, (byte) 0x9b, (byte) 0x3b,
        (byte) 0xf0, (byte) 0x7b, (byte) 0xae, (byte) 0xeb, (byte) 0xc2,
        (byte) 0x98, (byte) 0xbe, (byte) 0x01, (byte) 0xd3, (byte) 0xfa,
        (byte) 0xa2, (byte) 0x8f };

    public static DocsumDefinitionSet createDocsumDefinitionSet(String configID) {
        DocumentdbInfoConfig config = new ConfigGetter<>(DocumentdbInfoConfig.class).getConfig(configID);
        return new DocsumDefinitionSet(config.documentdb(0));
    }
}
